/**
 * @file 轨迹相关类型定义
 * @description 定义轨迹数据相关的接口和类型
 * @date 2024-06-18
 */

import { Position } from './map';
import { Timestamp } from './common';

/**
 * 轨迹查询参数
 */
export interface TrackQueryParams {
  deviceId: string;
  startTime: Timestamp;
  endTime: Timestamp;
}

/**
 * 设备查询参数
 */
export interface DeviceQueryParams {
  status?: number; // -1=全部, 0=离线, 1=在线
  keyword?: string;
}

/**
 * 设备信息类型
 * 与后端API返回的设备对象结构保持一致
 */
export interface DeviceInfo {
  deviceId: string;
  status: number;  // 0=离线, 1=在线
  name?: string;   // 可选字段，部分设备可能有名称
}

/**
 * 设备列表响应
 */
export interface DeviceListResponse {
  // 总记录数 
  total: number;
  // 当前页
  page: number;
  // 每页限制
  limit: number;
  // 设备列表
  devices: DeviceInfo[];
}

/**
 * 轨迹点状态枚举
 */
export enum TrackPointStatus {
  GPS = 'gps',      // GPS定位
  LBS = 'lbs',      // 基站定位
  INVALID = 'invalid' // 无效定位
}

/**
 * 轨迹点数据类型
 */
export interface TrackPoint {
  _id: string;
  deviceId: string;
  timestamp: Timestamp;
  position: Position;
  original?: Position;
  battery?: number;
  speed?: number;
  signal?: number;
  isFix?: boolean;
  positionSource?: 'gps' | 'lbs' | string;
  createdAt?: string;
  updatedAt?: string;
  direction?: number;  // 保留原有字段
  status?: TrackPointStatus; // 保留原有字段
}

/**
 * 轨迹数据响应类型
 */
export interface TrackData {
  // 后端返回的轨迹数据结构
  count: number;
  tracks: TrackPoint[];
  
  // 保留一些可能在前端使用的字段，标记为可选
  deviceId?: string;
  points?: TrackPoint[];
  startTime?: Timestamp;
  endTime?: Timestamp;
  distance?: number;
}

/**
 * 百度地图轨迹点数据结构
 */
export interface TrackPointsData {
  trackPoints: any[];
  colorOffset: number[];
} 